A multimedia data processing system is designed to present various multimedia materials in various combinations of text, graphics, video, image, animation, sound, etc. Such a system is a combination of hardware and software. The hardware includes a personal computer to which various multimedia devices can be attached. The hardware runs under the control of an operating system and multimedia application programs.
Multimedia applications impose heavy demands on the operating system to move large amounts of data from device to device, from system memory to a device, or vice-versa, in a continuous, real-time manner. Multimedia systems must support a flexible yet consistent means for transporting these large data objects, and control this activity accurately in real time. Adding new multimedia devices and data types should require minimal, if any, new system extension code. The total real memory requirements at run time must be minimized, so that system performance is not degraded. Also, support for complex data types and devices that manipulate interleaved data objects, must be provided. Finally, it must be possible to implement each multimedia data transport control means at the most appropriate system privilege level. Operating system extensions that support multimedia data types and devices must provide the ability to control the many different multimedia I/O devices and to transport, or stream, large multimedia data objects within real-time constraints.
Multimedia applications control the input and output of large amounts of data, including the continual display of bitmaps, output of digitized audio waveforms or MIDI audio sequences, input of digitized audio from an analog microphone or line source, etc. Applications control the data flow in the context of a real-time clock: certain events under program control occur at explicitly defined points in time, and these points are defined very accurately (e.g., in milliseconds).
Given only OS/2 control program services such as DOS calls, or similar services in other operating systems such as AIX or UNIX, controlling the level of function at the application programming interface requires highly complex, device-specific, data transport control modules. Even if such modules are created, there is no guarantee that the threads controlling each I/O operation would execute within their required time intervals. To address this problem, the application needs to add sophisticated semaphore logic and make the I/O control threads time critical. The nature of multitasking operating systems, combined with the high data throughput load common to multimedia applications, will at times prevent data from being delivered to the destination device within the allotted time interval. Failing to meet these real-time requirements results in visible or audible defects in the multimedia presentation.
A system solution for controlling many heterogeneous, multimedia hardware devices requires consistent support for widely divergent data types and real-time-dependent system response capabilities. The system must provide the capability to manage different device specific and data type specific behaviors in a generalized, consistent, device and data type independent interface. The ability of applications to readily control (i.e. tune) these behaviors, where necessary, is also a key requirement. The invention is directed to a multimedia data streaming protocol which overcomes the above difficulties meets the above criteria and objectives set forth hereinafter.